pacman::p_load(olsrr, corrplot, ggpubr, sf, spdep, GWmodel, tmap, tidyverse, gtsummary, ggstatsplot, sfdep)In-class Exercise 7
Calibrating Hedonic Pricing Model for Private Highrise Property with GWR Method
In this hands-on exercise, we will learn how to build hedonic pricing models by using GWR methods.
Geographically weighted regression (GWR) is a spatial statistical technique that takes non-stationary variables into consideration and models the local relationships between these independent variables and an outcome of interest / dependent variable.
For this exercise, the dependent variable is the resale prices of condominium in 2015. The independent variables are divided into either structural and locational.
Getting Started
Importing Geospatial Data
mpsz = st_read(dsn = "data/geospatial", layer = "MP14_SUBZONE_WEB_PL")Reading layer `MP14_SUBZONE_WEB_PL' from data source
`D:\2. SMU - MITB\Term 4\ISSS626 Geospatial\YX-Leng\ISSS626-Geospatial\In-class_Ex\In-class_Ex07\data\geospatial'
using driver `ESRI Shapefile'
Simple feature collection with 323 features and 15 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 2667.538 ymin: 15748.72 xmax: 56396.44 ymax: 50256.33
Projected CRS: SVY21
Updating CRS information
mpsz_svy21 <- st_transform(mpsz, 3414)st_crs(mpsz_svy21)Coordinate Reference System:
User input: EPSG:3414
wkt:
PROJCRS["SVY21 / Singapore TM",
BASEGEOGCRS["SVY21",
DATUM["SVY21",
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4757]],
CONVERSION["Singapore Transverse Mercator",
METHOD["Transverse Mercator",
ID["EPSG",9807]],
PARAMETER["Latitude of natural origin",1.36666666666667,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8801]],
PARAMETER["Longitude of natural origin",103.833333333333,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8802]],
PARAMETER["Scale factor at natural origin",1,
SCALEUNIT["unity",1],
ID["EPSG",8805]],
PARAMETER["False easting",28001.642,
LENGTHUNIT["metre",1],
ID["EPSG",8806]],
PARAMETER["False northing",38744.572,
LENGTHUNIT["metre",1],
ID["EPSG",8807]]],
CS[Cartesian,2],
AXIS["northing (N)",north,
ORDER[1],
LENGTHUNIT["metre",1]],
AXIS["easting (E)",east,
ORDER[2],
LENGTHUNIT["metre",1]],
USAGE[
SCOPE["Cadastre, engineering survey, topographic mapping."],
AREA["Singapore - onshore and offshore."],
BBOX[1.13,103.59,1.47,104.07]],
ID["EPSG",3414]]
st_bbox(mpsz_svy21) #view extent xmin ymin xmax ymax
2667.538 15748.721 56396.440 50256.334
Importing aspatial data
condo_resale = read_csv("data/aspatial/Condo_resale_2015.csv")Rows: 1436 Columns: 23
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
dbl (23): LATITUDE, LONGITUDE, POSTCODE, SELLING_PRICE, AREA_SQM, AGE, PROX_...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
glimpse(condo_resale)Rows: 1,436
Columns: 23
$ LATITUDE <dbl> 1.287145, 1.328698, 1.313727, 1.308563, 1.321437,…
$ LONGITUDE <dbl> 103.7802, 103.8123, 103.7971, 103.8247, 103.9505,…
$ POSTCODE <dbl> 118635, 288420, 267833, 258380, 467169, 466472, 3…
$ SELLING_PRICE <dbl> 3000000, 3880000, 3325000, 4250000, 1400000, 1320…
$ AREA_SQM <dbl> 309, 290, 248, 127, 145, 139, 218, 141, 165, 168,…
$ AGE <dbl> 30, 32, 33, 7, 28, 22, 24, 24, 27, 31, 17, 22, 6,…
$ PROX_CBD <dbl> 7.941259, 6.609797, 6.898000, 4.038861, 11.783402…
$ PROX_CHILDCARE <dbl> 0.16597932, 0.28027246, 0.42922669, 0.39473543, 0…
$ PROX_ELDERLYCARE <dbl> 2.5198118, 1.9333338, 0.5021395, 1.9910316, 1.121…
$ PROX_URA_GROWTH_AREA <dbl> 6.618741, 7.505109, 6.463887, 4.906512, 6.410632,…
$ PROX_HAWKER_MARKET <dbl> 1.76542207, 0.54507614, 0.37789301, 1.68259969, 0…
$ PROX_KINDERGARTEN <dbl> 0.05835552, 0.61592412, 0.14120309, 0.38200076, 0…
$ PROX_MRT <dbl> 0.5607188, 0.6584461, 0.3053433, 0.6910183, 0.528…
$ PROX_PARK <dbl> 1.1710446, 0.1992269, 0.2779886, 0.9832843, 0.116…
$ PROX_PRIMARY_SCH <dbl> 1.6340256, 0.9747834, 1.4715016, 1.4546324, 0.709…
$ PROX_TOP_PRIMARY_SCH <dbl> 3.3273195, 0.9747834, 1.4715016, 2.3006394, 0.709…
$ PROX_SHOPPING_MALL <dbl> 2.2102717, 2.9374279, 1.2256850, 0.3525671, 1.307…
$ PROX_SUPERMARKET <dbl> 0.9103958, 0.5900617, 0.4135583, 0.4162219, 0.581…
$ PROX_BUS_STOP <dbl> 0.10336166, 0.28673408, 0.28504777, 0.29872340, 0…
$ NO_Of_UNITS <dbl> 18, 20, 27, 30, 30, 31, 32, 32, 32, 32, 34, 34, 3…
$ FAMILY_FRIENDLY <dbl> 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0…
$ FREEHOLD <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1…
$ LEASEHOLD_99YR <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
head(condo_resale$LONGITUDE) #see the data in XCOORD column[1] 103.7802 103.8123 103.7971 103.8247 103.9505 103.9386
head(condo_resale$LATITUDE) #see the data in YCOORD column[1] 1.287145 1.328698 1.313727 1.308563 1.321437 1.314198
summary(condo_resale) LATITUDE LONGITUDE POSTCODE SELLING_PRICE
Min. :1.240 Min. :103.7 Min. : 18965 Min. : 540000
1st Qu.:1.309 1st Qu.:103.8 1st Qu.:259849 1st Qu.: 1100000
Median :1.328 Median :103.8 Median :469298 Median : 1383222
Mean :1.334 Mean :103.8 Mean :440439 Mean : 1751211
3rd Qu.:1.357 3rd Qu.:103.9 3rd Qu.:589486 3rd Qu.: 1950000
Max. :1.454 Max. :104.0 Max. :828833 Max. :18000000
AREA_SQM AGE PROX_CBD PROX_CHILDCARE
Min. : 34.0 Min. : 0.00 Min. : 0.3869 Min. :0.004927
1st Qu.:103.0 1st Qu.: 5.00 1st Qu.: 5.5574 1st Qu.:0.174481
Median :121.0 Median :11.00 Median : 9.3567 Median :0.258135
Mean :136.5 Mean :12.14 Mean : 9.3254 Mean :0.326313
3rd Qu.:156.0 3rd Qu.:18.00 3rd Qu.:12.6661 3rd Qu.:0.368293
Max. :619.0 Max. :37.00 Max. :19.1804 Max. :3.465726
PROX_ELDERLYCARE PROX_URA_GROWTH_AREA PROX_HAWKER_MARKET PROX_KINDERGARTEN
Min. :0.05451 Min. :0.2145 Min. :0.05182 Min. :0.004927
1st Qu.:0.61254 1st Qu.:3.1643 1st Qu.:0.55245 1st Qu.:0.276345
Median :0.94179 Median :4.6186 Median :0.90842 Median :0.413385
Mean :1.05351 Mean :4.5981 Mean :1.27987 Mean :0.458903
3rd Qu.:1.35122 3rd Qu.:5.7550 3rd Qu.:1.68578 3rd Qu.:0.578474
Max. :3.94916 Max. :9.1554 Max. :5.37435 Max. :2.229045
PROX_MRT PROX_PARK PROX_PRIMARY_SCH PROX_TOP_PRIMARY_SCH
Min. :0.05278 Min. :0.02906 Min. :0.07711 Min. :0.07711
1st Qu.:0.34646 1st Qu.:0.26211 1st Qu.:0.44024 1st Qu.:1.34451
Median :0.57430 Median :0.39926 Median :0.63505 Median :1.88213
Mean :0.67316 Mean :0.49802 Mean :0.75471 Mean :2.27347
3rd Qu.:0.84844 3rd Qu.:0.65592 3rd Qu.:0.95104 3rd Qu.:2.90954
Max. :3.48037 Max. :2.16105 Max. :3.92899 Max. :6.74819
PROX_SHOPPING_MALL PROX_SUPERMARKET PROX_BUS_STOP NO_Of_UNITS
Min. :0.0000 Min. :0.0000 Min. :0.001595 Min. : 18.0
1st Qu.:0.5258 1st Qu.:0.3695 1st Qu.:0.098356 1st Qu.: 188.8
Median :0.9357 Median :0.5687 Median :0.151710 Median : 360.0
Mean :1.0455 Mean :0.6141 Mean :0.193974 Mean : 409.2
3rd Qu.:1.3994 3rd Qu.:0.7862 3rd Qu.:0.220466 3rd Qu.: 590.0
Max. :3.4774 Max. :2.2441 Max. :2.476639 Max. :1703.0
FAMILY_FRIENDLY FREEHOLD LEASEHOLD_99YR
Min. :0.0000 Min. :0.0000 Min. :0.0000
1st Qu.:0.0000 1st Qu.:0.0000 1st Qu.:0.0000
Median :0.0000 Median :0.0000 Median :0.0000
Mean :0.4868 Mean :0.4227 Mean :0.4882
3rd Qu.:1.0000 3rd Qu.:1.0000 3rd Qu.:1.0000
Max. :1.0000 Max. :1.0000 Max. :1.0000
Converting aspatial data frame into a sf object
condo_resale.sf <- st_as_sf(condo_resale,
coords = c("LONGITUDE", "LATITUDE"),
crs=4326) %>%
st_transform(crs=3414)head(condo_resale.sf)Simple feature collection with 6 features and 21 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 22085.12 ymin: 29951.54 xmax: 41042.56 ymax: 34546.2
Projected CRS: SVY21 / Singapore TM
# A tibble: 6 × 22
POSTCODE SELLING_PRICE AREA_SQM AGE PROX_CBD PROX_CHILDCARE PROX_ELDERLYCARE
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 118635 3000000 309 30 7.94 0.166 2.52
2 288420 3880000 290 32 6.61 0.280 1.93
3 267833 3325000 248 33 6.90 0.429 0.502
4 258380 4250000 127 7 4.04 0.395 1.99
5 467169 1400000 145 28 11.8 0.119 1.12
6 466472 1320000 139 22 10.3 0.125 0.789
# ℹ 15 more variables: PROX_URA_GROWTH_AREA <dbl>, PROX_HAWKER_MARKET <dbl>,
# PROX_KINDERGARTEN <dbl>, PROX_MRT <dbl>, PROX_PARK <dbl>,
# PROX_PRIMARY_SCH <dbl>, PROX_TOP_PRIMARY_SCH <dbl>,
# PROX_SHOPPING_MALL <dbl>, PROX_SUPERMARKET <dbl>, PROX_BUS_STOP <dbl>,
# NO_Of_UNITS <dbl>, FAMILY_FRIENDLY <dbl>, FREEHOLD <dbl>,
# LEASEHOLD_99YR <dbl>, geometry <POINT [m]>
Exploratory Data Analysis (EDA)
ggplot(data=condo_resale.sf, aes(x=`SELLING_PRICE`)) + geom_histogram(bins=20, color="black", fill="light blue")
condo_resale.sf <- condo_resale.sf %>% mutate(`LOG_SELLING_PRICE` = log(SELLING_PRICE))ggplot(data=condo_resale.sf, aes(x=`LOG_SELLING_PRICE`)) + geom_histogram(bins=20, color="black", fill="light blue")
💡 Multiple Histogram Plots distribution of variables
AREA_SQM <- ggplot(data=condo_resale.sf, aes(x= `AREA_SQM`)) +
geom_histogram(bins=20, color="black", fill="light blue")
AGE <- ggplot(data=condo_resale.sf, aes(x= `AGE`)) +
geom_histogram(bins=20, color="black", fill="light blue")
PROX_CBD <- ggplot(data=condo_resale.sf, aes(x= `PROX_CBD`)) +
geom_histogram(bins=20, color="black", fill="light blue")
PROX_CHILDCARE <- ggplot(data=condo_resale.sf, aes(x= `PROX_CHILDCARE`)) +
geom_histogram(bins=20, color="black", fill="light blue")
PROX_ELDERLYCARE <- ggplot(data=condo_resale.sf, aes(x= `PROX_ELDERLYCARE`)) +
geom_histogram(bins=20, color="black", fill="light blue")
PROX_URA_GROWTH_AREA <- ggplot(data=condo_resale.sf, aes(x= `PROX_URA_GROWTH_AREA`)) +
geom_histogram(bins=20, color="black", fill="light blue")
PROX_HAWKER_MARKET <- ggplot(data=condo_resale.sf, aes(x= `PROX_HAWKER_MARKET`)) +
geom_histogram(bins=20, color="black", fill="light blue")
PROX_KINDERGARTEN <- ggplot(data=condo_resale.sf, aes(x= `PROX_KINDERGARTEN`)) +
geom_histogram(bins=20, color="black", fill="light blue")
PROX_MRT <- ggplot(data=condo_resale.sf, aes(x= `PROX_MRT`)) +
geom_histogram(bins=20, color="black", fill="light blue")
PROX_PARK <- ggplot(data=condo_resale.sf, aes(x= `PROX_PARK`)) +
geom_histogram(bins=20, color="black", fill="light blue")
PROX_PRIMARY_SCH <- ggplot(data=condo_resale.sf, aes(x= `PROX_PRIMARY_SCH`)) +
geom_histogram(bins=20, color="black", fill="light blue")
PROX_TOP_PRIMARY_SCH <- ggplot(data=condo_resale.sf,
aes(x= `PROX_TOP_PRIMARY_SCH`)) +
geom_histogram(bins=20, color="black", fill="light blue")
ggarrange(AREA_SQM, AGE, PROX_CBD, PROX_CHILDCARE, PROX_ELDERLYCARE,
PROX_URA_GROWTH_AREA, PROX_HAWKER_MARKET, PROX_KINDERGARTEN, PROX_MRT,
PROX_PARK, PROX_PRIMARY_SCH, PROX_TOP_PRIMARY_SCH,
ncol = 3, nrow = 4)
💡Drawing Statistical Point Map
tmap_mode("view")tmap mode set to interactive viewing
tmap_options(check.and.fix = TRUE)
tm_shape(mpsz_svy21)+
tm_polygons() + tm_shape(condo_resale.sf) +
tm_dots(col = "SELLING_PRICE",
alpha = 0.6,
style="quantile") +
tm_view(set.zoom.limits = c(11,14))Warning: The shape mpsz_svy21 is invalid (after reprojection). See
sf::st_is_valid
tmap_mode("plot")tmap mode set to plotting
Hedonic Pricing Modelling in R
Simple Linear Regression Method
condo.slr <- lm(formula=SELLING_PRICE ~ AREA_SQM, data = condo_resale.sf)Dependent variable = selling price; independent variable = AREA_SQM
summary(condo.slr)
Call:
lm(formula = SELLING_PRICE ~ AREA_SQM, data = condo_resale.sf)
Residuals:
Min 1Q Median 3Q Max
-3695815 -391764 -87517 258900 13503875
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -258121.1 63517.2 -4.064 5.09e-05 ***
AREA_SQM 14719.0 428.1 34.381 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 942700 on 1434 degrees of freedom
Multiple R-squared: 0.4518, Adjusted R-squared: 0.4515
F-statistic: 1182 on 1 and 1434 DF, p-value: < 2.2e-16
ggplot(data=condo_resale.sf,
aes(x=`AREA_SQM`, y=`SELLING_PRICE`)) +
geom_point() +
geom_smooth(method = lm)`geom_smooth()` using formula = 'y ~ x'

Multiple Linear Regression Method
Code chunk below checks for multicollinearity of independent variables. Quality of regression model will be compromised if highly correlated variables are used.
corrplot(cor(condo_resale[, 5:23]), diag = FALSE, order = "AOE",
tl.pos = "td", tl.cex = 0.5, method = "number", type = "upper")
ggcorrmat(condo_resale[, 5:23])
Building a hedonic pricing model using multiple linear regression method
condo.mlr <- lm(formula = SELLING_PRICE ~ AREA_SQM + AGE +
PROX_CBD + PROX_CHILDCARE + PROX_ELDERLYCARE +
PROX_URA_GROWTH_AREA + PROX_HAWKER_MARKET + PROX_KINDERGARTEN +
PROX_MRT + PROX_PARK + PROX_PRIMARY_SCH +
PROX_TOP_PRIMARY_SCH + PROX_SHOPPING_MALL + PROX_SUPERMARKET +
PROX_BUS_STOP + NO_Of_UNITS + FAMILY_FRIENDLY + FREEHOLD +
LEASEHOLD_99YR, # added back from hands-on Ex07
data=condo_resale.sf)
summary(condo.mlr)
Call:
lm(formula = SELLING_PRICE ~ AREA_SQM + AGE + PROX_CBD + PROX_CHILDCARE +
PROX_ELDERLYCARE + PROX_URA_GROWTH_AREA + PROX_HAWKER_MARKET +
PROX_KINDERGARTEN + PROX_MRT + PROX_PARK + PROX_PRIMARY_SCH +
PROX_TOP_PRIMARY_SCH + PROX_SHOPPING_MALL + PROX_SUPERMARKET +
PROX_BUS_STOP + NO_Of_UNITS + FAMILY_FRIENDLY + FREEHOLD +
LEASEHOLD_99YR, data = condo_resale.sf)
Residuals:
Min 1Q Median 3Q Max
-3471036 -286903 -22426 239412 12254549
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 543071.4 136210.9 3.987 7.03e-05 ***
AREA_SQM 12688.7 370.1 34.283 < 2e-16 ***
AGE -24566.0 2766.0 -8.881 < 2e-16 ***
PROX_CBD -78122.0 6791.4 -11.503 < 2e-16 ***
PROX_CHILDCARE -333219.0 111020.3 -3.001 0.002734 **
PROX_ELDERLYCARE 170950.0 42110.8 4.060 5.19e-05 ***
PROX_URA_GROWTH_AREA 38507.6 12523.7 3.075 0.002147 **
PROX_HAWKER_MARKET 23801.2 29299.9 0.812 0.416739
PROX_KINDERGARTEN 144098.0 82738.7 1.742 0.081795 .
PROX_MRT -322775.9 58528.1 -5.515 4.14e-08 ***
PROX_PARK 564487.9 66563.0 8.481 < 2e-16 ***
PROX_PRIMARY_SCH 186170.5 65515.2 2.842 0.004553 **
PROX_TOP_PRIMARY_SCH -477.1 20598.0 -0.023 0.981525
PROX_SHOPPING_MALL -207721.5 42855.5 -4.847 1.39e-06 ***
PROX_SUPERMARKET -48074.7 77145.3 -0.623 0.533273
PROX_BUS_STOP 675755.0 138552.0 4.877 1.20e-06 ***
NO_Of_UNITS -216.2 90.3 -2.394 0.016797 *
FAMILY_FRIENDLY 142128.3 47055.1 3.020 0.002569 **
FREEHOLD 300646.5 77296.5 3.890 0.000105 ***
LEASEHOLD_99YR -77137.4 77570.9 -0.994 0.320192
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 755800 on 1416 degrees of freedom
Multiple R-squared: 0.652, Adjusted R-squared: 0.6474
F-statistic: 139.6 on 19 and 1416 DF, p-value: < 2.2e-16
Model Assessment: olsrr method
- Look at ANOVA results and explain adj. R-Squared results
- Describe and elaborate on the variables
- Run diagnostic tests - multicollinearity, normality etc.
ols_regress(condo.mlr) Model Summary
-----------------------------------------------------------------------------
R 0.807 RMSE 750537.537
R-Squared 0.652 MSE 571262902261.223
Adj. R-Squared 0.647 Coef. Var 43.160
Pred R-Squared 0.637 AIC 42971.173
MAE 412117.987 SBC 43081.835
-----------------------------------------------------------------------------
RMSE: Root Mean Square Error
MSE: Mean Square Error
MAE: Mean Absolute Error
AIC: Akaike Information Criteria
SBC: Schwarz Bayesian Criteria
ANOVA
--------------------------------------------------------------------------------
Sum of
Squares DF Mean Square F Sig.
--------------------------------------------------------------------------------
Regression 1.515738e+15 19 7.977571e+13 139.648 0.0000
Residual 8.089083e+14 1416 571262902261.223
Total 2.324647e+15 1435
--------------------------------------------------------------------------------
Parameter Estimates
-----------------------------------------------------------------------------------------------------------------
model Beta Std. Error Std. Beta t Sig lower upper
-----------------------------------------------------------------------------------------------------------------
(Intercept) 543071.420 136210.918 3.987 0.000 275874.535 810268.305
AREA_SQM 12688.669 370.119 0.579 34.283 0.000 11962.627 13414.710
AGE -24566.001 2766.041 -0.166 -8.881 0.000 -29991.980 -19140.022
PROX_CBD -78121.985 6791.377 -0.267 -11.503 0.000 -91444.227 -64799.744
PROX_CHILDCARE -333219.036 111020.303 -0.087 -3.001 0.003 -551000.984 -115437.089
PROX_ELDERLYCARE 170949.961 42110.748 0.083 4.060 0.000 88343.803 253556.120
PROX_URA_GROWTH_AREA 38507.622 12523.661 0.059 3.075 0.002 13940.700 63074.545
PROX_HAWKER_MARKET 23801.197 29299.923 0.019 0.812 0.417 -33674.725 81277.120
PROX_KINDERGARTEN 144097.972 82738.669 0.030 1.742 0.082 -18205.570 306401.514
PROX_MRT -322775.874 58528.079 -0.123 -5.515 0.000 -437586.937 -207964.811
PROX_PARK 564487.876 66563.011 0.148 8.481 0.000 433915.162 695060.590
PROX_PRIMARY_SCH 186170.524 65515.193 0.072 2.842 0.005 57653.253 314687.795
PROX_TOP_PRIMARY_SCH -477.073 20597.972 -0.001 -0.023 0.982 -40882.894 39928.747
PROX_SHOPPING_MALL -207721.520 42855.500 -0.109 -4.847 0.000 -291788.613 -123654.427
PROX_SUPERMARKET -48074.679 77145.257 -0.012 -0.623 0.533 -199405.956 103256.599
PROX_BUS_STOP 675755.044 138551.991 0.133 4.877 0.000 403965.817 947544.272
NO_Of_UNITS -216.180 90.302 -0.046 -2.394 0.017 -393.320 -39.040
FAMILY_FRIENDLY 142128.272 47055.082 0.056 3.020 0.003 49823.107 234433.438
FREEHOLD 300646.543 77296.529 0.117 3.890 0.000 149018.525 452274.561
LEASEHOLD_99YR -77137.375 77570.869 -0.030 -0.994 0.320 -229303.551 75028.801
-----------------------------------------------------------------------------------------------------------------
Multicollinearity Check
ols_vif_tol(condo.mlr) Variables Tolerance VIF
1 AREA_SQM 0.8601326 1.162611
2 AGE 0.7011585 1.426211
3 PROX_CBD 0.4575471 2.185567
4 PROX_CHILDCARE 0.2898233 3.450378
5 PROX_ELDERLYCARE 0.5922238 1.688551
6 PROX_URA_GROWTH_AREA 0.6614081 1.511926
7 PROX_HAWKER_MARKET 0.4373874 2.286303
8 PROX_KINDERGARTEN 0.8356793 1.196631
9 PROX_MRT 0.4949877 2.020252
10 PROX_PARK 0.8015728 1.247547
11 PROX_PRIMARY_SCH 0.3823248 2.615577
12 PROX_TOP_PRIMARY_SCH 0.4878620 2.049760
13 PROX_SHOPPING_MALL 0.4903052 2.039546
14 PROX_SUPERMARKET 0.6142127 1.628100
15 PROX_BUS_STOP 0.3311024 3.020213
16 NO_Of_UNITS 0.6543336 1.528272
17 FAMILY_FRIENDLY 0.7191719 1.390488
18 FREEHOLD 0.2728521 3.664990
19 LEASEHOLD_99YR 0.2645988 3.779307
VIF value is less than 10 - there is no need to exclude the LEASEHOLD_99YR variable.
Variable Selection
condo_fw_mlr <- ols_step_forward_p(
condo.mlr,
p_val = 0.05,
details = TRUE)Forward Selection Method
------------------------
Candidate Terms:
1. AREA_SQM
2. AGE
3. PROX_CBD
4. PROX_CHILDCARE
5. PROX_ELDERLYCARE
6. PROX_URA_GROWTH_AREA
7. PROX_HAWKER_MARKET
8. PROX_KINDERGARTEN
9. PROX_MRT
10. PROX_PARK
11. PROX_PRIMARY_SCH
12. PROX_TOP_PRIMARY_SCH
13. PROX_SHOPPING_MALL
14. PROX_SUPERMARKET
15. PROX_BUS_STOP
16. NO_Of_UNITS
17. FAMILY_FRIENDLY
18. FREEHOLD
19. LEASEHOLD_99YR
Step => 0
Model => SELLING_PRICE ~ 1
R2 => 0
Initiating stepwise selection...
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
AREA_SQM 0.00000 0.452 0.451 43587.753
PROX_CBD 0.00000 0.243 0.242 44051.772
FREEHOLD 0.00000 0.082 0.081 44328.539
LEASEHOLD_99YR 0.00000 0.066 0.065 44353.172
PROX_PARK 0.00000 0.049 0.048 44378.817
NO_Of_UNITS 0.00000 0.048 0.048 44380.124
PROX_PRIMARY_SCH 0.00000 0.032 0.032 44403.847
PROX_HAWKER_MARKET 0.00000 0.023 0.022 44417.505
PROX_CHILDCARE 0.00000 0.021 0.021 44420.298
PROX_ELDERLYCARE 0.00000 0.021 0.020 44420.546
PROX_BUS_STOP 0.00000 0.021 0.020 44420.742
PROX_KINDERGARTEN 2e-05 0.013 0.012 44432.322
PROX_SUPERMARKET 0.00088 0.008 0.007 44439.977
PROX_SHOPPING_MALL 0.00154 0.007 0.006 44441.023
FAMILY_FRIENDLY 0.00907 0.005 0.004 44444.248
PROX_MRT 0.01071 0.005 0.004 44444.545
PROX_URA_GROWTH_AREA 0.13510 0.002 0.001 44448.832
PROX_TOP_PRIMARY_SCH 0.23180 0.001 0.000 44449.636
AGE 0.52978 0.000 0.000 44450.673
----------------------------------------------------------------------------
Step => 1
Selected => AREA_SQM
Model => SELLING_PRICE ~ AREA_SQM
R2 => 0.452
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
PROX_CBD 0.00000 0.569 0.569 43243.523
FREEHOLD 0.00000 0.487 0.487 43493.627
PROX_PARK 0.00000 0.478 0.478 43518.542
LEASEHOLD_99YR 0.00000 0.475 0.474 43527.150
AGE 0.00000 0.471 0.470 43538.063
PROX_SHOPPING_MALL 0.00000 0.467 0.466 43549.216
PROX_HAWKER_MARKET 0.00000 0.465 0.464 43555.065
PROX_MRT 0.00000 0.465 0.464 43556.097
NO_Of_UNITS 0.00000 0.464 0.463 43557.089
PROX_SUPERMARKET 0.00000 0.461 0.461 43564.792
PROX_PRIMARY_SCH 3e-05 0.458 0.458 43572.418
PROX_ELDERLYCARE 5e-05 0.458 0.457 43573.203
PROX_URA_GROWTH_AREA 9e-05 0.458 0.457 43574.292
FAMILY_FRIENDLY 0.00026 0.457 0.456 43576.392
PROX_CHILDCARE 0.00275 0.455 0.455 43580.768
PROX_BUS_STOP 0.00381 0.455 0.454 43581.362
PROX_KINDERGARTEN 0.15757 0.453 0.452 43587.751
PROX_TOP_PRIMARY_SCH 0.47485 0.452 0.451 43589.241
----------------------------------------------------------------------------
Step => 2
Selected => PROX_CBD
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD
R2 => 0.569
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
PROX_PARK 0.00000 0.589 0.588 43177.691
AGE 0.00000 0.586 0.585 43188.935
FREEHOLD 0.00000 0.579 0.578 43213.005
PROX_ELDERLYCARE 0.00000 0.578 0.577 43216.850
PROX_TOP_PRIMARY_SCH 0.00000 0.577 0.576 43218.861
LEASEHOLD_99YR 0.00000 0.576 0.575 43224.500
PROX_HAWKER_MARKET 1e-05 0.575 0.574 43225.123
PROX_SHOPPING_MALL 8e-05 0.574 0.573 43229.948
PROX_SUPERMARKET 0.00147 0.572 0.571 43235.376
PROX_MRT 0.00613 0.572 0.571 43237.989
NO_Of_UNITS 0.01059 0.571 0.570 43238.970
PROX_PRIMARY_SCH 0.04530 0.570 0.570 43241.503
PROX_BUS_STOP 0.06634 0.570 0.569 43242.142
FAMILY_FRIENDLY 0.11212 0.570 0.569 43242.991
PROX_CHILDCARE 0.29768 0.570 0.569 43244.435
PROX_URA_GROWTH_AREA 0.78658 0.569 0.568 43245.450
PROX_KINDERGARTEN 0.80879 0.569 0.568 43245.465
----------------------------------------------------------------------------
Step => 3
Selected => PROX_PARK
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK
R2 => 0.589
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
FREEHOLD 0.00000 0.604 0.603 43125.474
AGE 0.00000 0.602 0.601 43132.534
LEASEHOLD_99YR 0.00000 0.601 0.600 43138.902
PROX_ELDERLYCARE 0.00000 0.596 0.595 43153.932
PROX_TOP_PRIMARY_SCH 3e-05 0.594 0.593 43162.363
NO_Of_UNITS 0.00013 0.593 0.592 43164.977
PROX_SHOPPING_MALL 0.00015 0.593 0.592 43165.286
PROX_HAWKER_MARKET 7e-04 0.592 0.591 43168.151
PROX_MRT 0.00250 0.592 0.591 43170.516
FAMILY_FRIENDLY 0.02445 0.591 0.589 43174.609
PROX_SUPERMARKET 0.02905 0.591 0.589 43174.908
PROX_URA_GROWTH_AREA 0.14518 0.590 0.589 43177.560
PROX_CHILDCARE 0.31093 0.589 0.588 43178.660
PROX_PRIMARY_SCH 0.34515 0.589 0.588 43178.796
PROX_BUS_STOP 0.47898 0.589 0.588 43179.188
PROX_KINDERGARTEN 0.87351 0.589 0.588 43179.665
----------------------------------------------------------------------------
Step => 4
Selected => FREEHOLD
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK + FREEHOLD
R2 => 0.604
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
AGE 0.00000 0.620 0.619 43069.222
PROX_SHOPPING_MALL 0.00000 0.611 0.609 43104.195
PROX_ELDERLYCARE 5e-05 0.609 0.608 43111.036
PROX_TOP_PRIMARY_SCH 7e-05 0.609 0.607 43111.551
PROX_HAWKER_MARKET 0.00088 0.607 0.606 43116.360
PROX_SUPERMARKET 0.00324 0.607 0.605 43118.765
PROX_MRT 0.00345 0.607 0.605 43118.882
PROX_BUS_STOP 0.09204 0.605 0.604 43124.623
FAMILY_FRIENDLY 0.11599 0.605 0.604 43124.992
PROX_PRIMARY_SCH 0.21752 0.605 0.603 43125.946
NO_Of_UNITS 0.25242 0.605 0.603 43126.158
PROX_URA_GROWTH_AREA 0.27640 0.605 0.603 43126.284
LEASEHOLD_99YR 0.49846 0.605 0.603 43127.014
PROX_KINDERGARTEN 0.66364 0.604 0.603 43127.284
PROX_CHILDCARE 0.82289 0.604 0.603 43127.424
----------------------------------------------------------------------------
Step => 5
Selected => AGE
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK + FREEHOLD + AGE
R2 => 0.62
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
PROX_ELDERLYCARE 0.00000 0.627 0.625 43046.515
PROX_SHOPPING_MALL 0.00014 0.624 0.622 43056.710
PROX_TOP_PRIMARY_SCH 0.00036 0.623 0.622 43058.400
PROX_MRT 0.00118 0.623 0.621 43060.651
PROX_HAWKER_MARKET 0.00229 0.623 0.621 43061.874
NO_Of_UNITS 0.03614 0.621 0.620 43066.808
PROX_SUPERMARKET 0.03902 0.621 0.620 43066.940
PROX_PRIMARY_SCH 0.04454 0.621 0.620 43067.165
PROX_URA_GROWTH_AREA 0.05538 0.621 0.619 43067.532
FAMILY_FRIENDLY 0.06368 0.621 0.619 43067.765
PROX_BUS_STOP 0.09258 0.621 0.619 43068.378
LEASEHOLD_99YR 0.33191 0.620 0.619 43070.276
PROX_KINDERGARTEN 0.54422 0.620 0.619 43070.852
PROX_CHILDCARE 0.76117 0.620 0.619 43071.129
----------------------------------------------------------------------------
Step => 6
Selected => PROX_ELDERLYCARE
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK + FREEHOLD + AGE + PROX_ELDERLYCARE
R2 => 0.627
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
PROX_SHOPPING_MALL 0.00000 0.634 0.632 43020.990
PROX_MRT 0.00000 0.633 0.631 43024.733
PROX_SUPERMARKET 0.00311 0.629 0.627 43039.719
PROX_CHILDCARE 0.00320 0.629 0.627 43039.776
PROX_TOP_PRIMARY_SCH 0.02859 0.628 0.626 43043.694
FAMILY_FRIENDLY 0.04001 0.628 0.626 43044.273
PROX_URA_GROWTH_AREA 0.06111 0.628 0.626 43044.987
PROX_HAWKER_MARKET 0.14370 0.627 0.625 43046.364
NO_Of_UNITS 0.21750 0.627 0.625 43046.985
LEASEHOLD_99YR 0.33225 0.627 0.625 43047.569
PROX_PRIMARY_SCH 0.72554 0.627 0.625 43048.391
PROX_BUS_STOP 0.73834 0.627 0.625 43048.403
PROX_KINDERGARTEN 0.96832 0.627 0.625 43048.513
----------------------------------------------------------------------------
Step => 7
Selected => PROX_SHOPPING_MALL
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK + FREEHOLD + AGE + PROX_ELDERLYCARE + PROX_SHOPPING_MALL
R2 => 0.634
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
PROX_URA_GROWTH_AREA 2e-04 0.637 0.635 43009.092
PROX_MRT 0.00038 0.637 0.635 43010.278
FAMILY_FRIENDLY 0.09004 0.634 0.632 43020.098
NO_Of_UNITS 0.09561 0.634 0.632 43020.195
PROX_BUS_STOP 0.10105 0.634 0.632 43020.284
PROX_CHILDCARE 0.16782 0.634 0.632 43021.075
PROX_PRIMARY_SCH 0.20169 0.634 0.632 43021.349
PROX_HAWKER_MARKET 0.28053 0.634 0.632 43021.818
PROX_SUPERMARKET 0.39017 0.634 0.632 43022.247
LEASEHOLD_99YR 0.41342 0.634 0.632 43022.317
PROX_KINDERGARTEN 0.64794 0.634 0.632 43022.781
PROX_TOP_PRIMARY_SCH 0.88928 0.634 0.632 43022.971
----------------------------------------------------------------------------
Step => 8
Selected => PROX_URA_GROWTH_AREA
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK + FREEHOLD + AGE + PROX_ELDERLYCARE + PROX_SHOPPING_MALL + PROX_URA_GROWTH_AREA
R2 => 0.637
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
PROX_MRT 0.00055 0.640 0.638 42999.058
NO_Of_UNITS 0.04357 0.638 0.636 43006.989
PROX_BUS_STOP 0.07301 0.638 0.636 43007.854
FAMILY_FRIENDLY 0.07751 0.638 0.636 43007.953
PROX_CHILDCARE 0.17683 0.638 0.635 43009.255
LEASEHOLD_99YR 0.26341 0.638 0.635 43009.832
PROX_SUPERMARKET 0.32522 0.637 0.635 43010.117
PROX_TOP_PRIMARY_SCH 0.36995 0.637 0.635 43010.282
PROX_HAWKER_MARKET 0.48716 0.637 0.635 43010.606
PROX_KINDERGARTEN 0.49501 0.637 0.635 43010.623
PROX_PRIMARY_SCH 0.60814 0.637 0.635 43010.827
----------------------------------------------------------------------------
Step => 9
Selected => PROX_MRT
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK + FREEHOLD + AGE + PROX_ELDERLYCARE + PROX_SHOPPING_MALL + PROX_URA_GROWTH_AREA + PROX_MRT
R2 => 0.64
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
PROX_BUS_STOP 6e-05 0.644 0.642 42984.951
PROX_PRIMARY_SCH 0.01738 0.642 0.639 42995.355
NO_Of_UNITS 0.04105 0.641 0.639 42996.851
FAMILY_FRIENDLY 0.06468 0.641 0.639 42997.618
PROX_TOP_PRIMARY_SCH 0.16342 0.641 0.638 42999.100
LEASEHOLD_99YR 0.16895 0.641 0.638 42999.151
PROX_KINDERGARTEN 0.19107 0.641 0.638 42999.335
PROX_HAWKER_MARKET 0.19288 0.641 0.638 42999.349
PROX_SUPERMARKET 0.45603 0.640 0.638 43000.498
PROX_CHILDCARE 0.71809 0.640 0.638 43000.927
----------------------------------------------------------------------------
Step => 10
Selected => PROX_BUS_STOP
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK + FREEHOLD + AGE + PROX_ELDERLYCARE + PROX_SHOPPING_MALL + PROX_URA_GROWTH_AREA + PROX_MRT + PROX_BUS_STOP
R2 => 0.644
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
FAMILY_FRIENDLY 0.01590 0.646 0.643 42981.085
PROX_CHILDCARE 0.02032 0.646 0.643 42981.519
NO_Of_UNITS 0.03658 0.645 0.643 42982.543
PROX_PRIMARY_SCH 0.06688 0.645 0.642 42983.563
PROX_KINDERGARTEN 0.09160 0.645 0.642 42984.080
LEASEHOLD_99YR 0.10015 0.645 0.642 42984.224
PROX_TOP_PRIMARY_SCH 0.27924 0.645 0.642 42985.770
PROX_HAWKER_MARKET 0.53937 0.644 0.642 42986.571
PROX_SUPERMARKET 0.91393 0.644 0.641 42986.939
----------------------------------------------------------------------------
Step => 11
Selected => FAMILY_FRIENDLY
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK + FREEHOLD + AGE + PROX_ELDERLYCARE + PROX_SHOPPING_MALL + PROX_URA_GROWTH_AREA + PROX_MRT + PROX_BUS_STOP + FAMILY_FRIENDLY
R2 => 0.646
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
NO_Of_UNITS 0.00533 0.648 0.645 42975.246
PROX_CHILDCARE 0.01908 0.647 0.644 42977.539
PROX_PRIMARY_SCH 0.06018 0.647 0.644 42979.519
LEASEHOLD_99YR 0.06704 0.647 0.644 42979.699
PROX_KINDERGARTEN 0.09772 0.646 0.643 42980.317
PROX_TOP_PRIMARY_SCH 0.31070 0.646 0.643 42982.048
PROX_HAWKER_MARKET 0.66885 0.646 0.643 42982.901
PROX_SUPERMARKET 0.92593 0.646 0.643 42983.077
----------------------------------------------------------------------------
Step => 12
Selected => NO_Of_UNITS
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK + FREEHOLD + AGE + PROX_ELDERLYCARE + PROX_SHOPPING_MALL + PROX_URA_GROWTH_AREA + PROX_MRT + PROX_BUS_STOP + FAMILY_FRIENDLY + NO_Of_UNITS
R2 => 0.648
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
PROX_CHILDCARE 0.02092 0.649 0.646 42971.858
PROX_PRIMARY_SCH 0.05496 0.649 0.645 42973.525
PROX_KINDERGARTEN 0.13311 0.648 0.645 42974.967
LEASEHOLD_99YR 0.16053 0.648 0.645 42975.257
PROX_TOP_PRIMARY_SCH 0.28337 0.648 0.645 42976.084
PROX_HAWKER_MARKET 0.62348 0.648 0.644 42977.003
PROX_SUPERMARKET 0.65604 0.648 0.644 42977.046
----------------------------------------------------------------------------
Step => 13
Selected => PROX_CHILDCARE
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK + FREEHOLD + AGE + PROX_ELDERLYCARE + PROX_SHOPPING_MALL + PROX_URA_GROWTH_AREA + PROX_MRT + PROX_BUS_STOP + FAMILY_FRIENDLY + NO_Of_UNITS + PROX_CHILDCARE
R2 => 0.649
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
PROX_PRIMARY_SCH 0.00805 0.651 0.647 42966.758
PROX_KINDERGARTEN 0.08599 0.650 0.646 42970.878
PROX_TOP_PRIMARY_SCH 0.23060 0.649 0.646 42972.405
LEASEHOLD_99YR 0.32104 0.649 0.646 42972.863
PROX_HAWKER_MARKET 0.49652 0.649 0.646 42973.391
PROX_SUPERMARKET 0.59607 0.649 0.646 42973.574
----------------------------------------------------------------------------
Step => 14
Selected => PROX_PRIMARY_SCH
Model => SELLING_PRICE ~ AREA_SQM + PROX_CBD + PROX_PARK + FREEHOLD + AGE + PROX_ELDERLYCARE + PROX_SHOPPING_MALL + PROX_URA_GROWTH_AREA + PROX_MRT + PROX_BUS_STOP + FAMILY_FRIENDLY + NO_Of_UNITS + PROX_CHILDCARE + PROX_PRIMARY_SCH
R2 => 0.651
Selection Metrics Table
----------------------------------------------------------------------------
Predictor Pr(>|t|) R-Squared Adj. R-Squared AIC
----------------------------------------------------------------------------
PROX_KINDERGARTEN 0.07528 0.651 0.648 42965.558
LEASEHOLD_99YR 0.24093 0.651 0.647 42967.367
PROX_HAWKER_MARKET 0.29790 0.651 0.647 42967.662
PROX_TOP_PRIMARY_SCH 0.38435 0.651 0.647 42967.993
PROX_SUPERMARKET 0.76578 0.651 0.647 42968.669
----------------------------------------------------------------------------
No more variables to be added.
Variables Selected:
=> AREA_SQM
=> PROX_CBD
=> PROX_PARK
=> FREEHOLD
=> AGE
=> PROX_ELDERLYCARE
=> PROX_SHOPPING_MALL
=> PROX_URA_GROWTH_AREA
=> PROX_MRT
=> PROX_BUS_STOP
=> FAMILY_FRIENDLY
=> NO_Of_UNITS
=> PROX_CHILDCARE
=> PROX_PRIMARY_SCH
plot(condo_fw_mlr)
Test for Non-Linearity
ols_plot_resid_fit(condo_fw_mlr$model)
Test for Normality
ols_plot_resid_hist(condo_fw_mlr$model)
ols_test_normality(condo_fw_mlr$model)Warning in ks.test.default(y, "pnorm", mean(y), sd(y)): ties should not be
present for the one-sample Kolmogorov-Smirnov test
-----------------------------------------------
Test Statistic pvalue
-----------------------------------------------
Shapiro-Wilk 0.6856 0.0000
Kolmogorov-Smirnov 0.1366 0.0000
Cramer-von Mises 121.0768 0.0000
Anderson-Darling 67.9551 0.0000
-----------------------------------------------
Testing for Spatial Autocorrelation
mlr_output <- as.data.frame(condo_fw_mlr$model$residuals) %>%
rename('FW_MLR_RES' = 'condo_fw_mlr$model$residuals')Next, we will join the newly created data frame with condo_resale_sf object.
condo_resale.sf <- cbind(condo_resale.sf, # Use cbind because there is no unique identifier in the tables
mlr_output$FW_MLR_RES) %>%
rename('MLR_RES_2' = 'mlr_output.FW_MLR_RES')tmap_mode("view")tmap mode set to interactive viewing
tm_shape(mpsz)+
tmap_options(check.and.fix = TRUE) +
tm_polygons(alpha = 0.4) +
tm_shape(condo_resale.sf) +
tm_dots(col = "MLR_RES_2",
alpha = 0.6,
style = "quantile")Warning: The shape mpsz is invalid (after reprojection). See sf::st_is_valid
Variable(s) "MLR_RES_2" contains positive and negative values, so midpoint is set to 0. Set midpoint = NA to show the full spectrum of the color palette.
tmap_mode("plot")tmap mode set to plotting
Moran’s I Test
condo_resale.sf <- condo_resale.sf %>%
mutate(nb = st_knn(geometry, k=6,
longlat = FALSE),
wt = st_weights(nb,
style = "W"),
.before = 1)global_moran_perm(condo_resale.sf$MLR_RES_2,
condo_resale.sf$nb,
condo_resale.sf$wt,
alternative = "two.sided",
nsim = 99)
Monte-Carlo simulation of Moran I
data: x
weights: listw
number of simulations + 1: 100
statistic = 0.32254, observed rank = 100, p-value < 2.2e-16
alternative hypothesis: two.sided
Building Hedonic Pricing Models using GWmodel
Building Fixed Bandwidth GWR Model
💡 Computing fixed bandwidth
bw.fixed <- bw.gwr(formula = SELLING_PRICE ~ AREA_SQM + AGE + PROX_CBD +
PROX_CHILDCARE + PROX_ELDERLYCARE + PROX_URA_GROWTH_AREA +
PROX_MRT + PROX_PARK + PROX_PRIMARY_SCH +
PROX_SHOPPING_MALL + PROX_BUS_STOP + NO_Of_UNITS +
FAMILY_FRIENDLY + FREEHOLD,
data=condo_resale.sf,
approach="CV",
kernel="gaussian",
adaptive=FALSE,
longlat=FALSE)Fixed bandwidth: 17660.96 CV score: 8.259118e+14
Fixed bandwidth: 10917.26 CV score: 7.970454e+14
Fixed bandwidth: 6749.419 CV score: 7.273273e+14
Fixed bandwidth: 4173.553 CV score: 6.300006e+14
Fixed bandwidth: 2581.58 CV score: 5.404958e+14
Fixed bandwidth: 1597.687 CV score: 4.857515e+14
Fixed bandwidth: 989.6077 CV score: 4.722431e+14
Fixed bandwidth: 613.7939 CV score: 1.378294e+16
Fixed bandwidth: 1221.873 CV score: 4.778717e+14
Fixed bandwidth: 846.0596 CV score: 4.791629e+14
Fixed bandwidth: 1078.325 CV score: 4.751406e+14
Fixed bandwidth: 934.7772 CV score: 4.72518e+14
Fixed bandwidth: 1023.495 CV score: 4.730305e+14
Fixed bandwidth: 968.6643 CV score: 4.721317e+14
Fixed bandwidth: 955.7206 CV score: 4.722072e+14
Fixed bandwidth: 976.6639 CV score: 4.721387e+14
Fixed bandwidth: 963.7202 CV score: 4.721484e+14
Fixed bandwidth: 971.7199 CV score: 4.721293e+14
Fixed bandwidth: 973.6083 CV score: 4.721309e+14
Fixed bandwidth: 970.5527 CV score: 4.721295e+14
Fixed bandwidth: 972.4412 CV score: 4.721296e+14
Fixed bandwidth: 971.2741 CV score: 4.721292e+14
Fixed bandwidth: 970.9985 CV score: 4.721293e+14
Fixed bandwidth: 971.4443 CV score: 4.721292e+14
Fixed bandwidth: 971.5496 CV score: 4.721293e+14
Fixed bandwidth: 971.3793 CV score: 4.721292e+14
Fixed bandwidth: 971.3391 CV score: 4.721292e+14
Fixed bandwidth: 971.3143 CV score: 4.721292e+14
Fixed bandwidth: 971.3545 CV score: 4.721292e+14
Fixed bandwidth: 971.3296 CV score: 4.721292e+14
Fixed bandwidth: 971.345 CV score: 4.721292e+14
Fixed bandwidth: 971.3355 CV score: 4.721292e+14
Fixed bandwidth: 971.3413 CV score: 4.721292e+14
Fixed bandwidth: 971.3377 CV score: 4.721292e+14
Fixed bandwidth: 971.34 CV score: 4.721292e+14
Fixed bandwidth: 971.3405 CV score: 4.721292e+14
Fixed bandwidth: 971.3408 CV score: 4.721292e+14
Fixed bandwidth: 971.3403 CV score: 4.721292e+14
Fixed bandwidth: 971.3406 CV score: 4.721292e+14
Fixed bandwidth: 971.3404 CV score: 4.721292e+14
Fixed bandwidth: 971.3405 CV score: 4.721292e+14
Fixed bandwidth: 971.3405 CV score: 4.721292e+14
💡Calibrating the GWR model using fixed bandwidth and gaussian kernel
gwr.fixed <- gwr.basic(formula = SELLING_PRICE ~ AREA_SQM + AGE + PROX_CBD +
PROX_CHILDCARE + PROX_ELDERLYCARE + PROX_URA_GROWTH_AREA +
PROX_MRT + PROX_PARK + PROX_PRIMARY_SCH +
PROX_SHOPPING_MALL + PROX_BUS_STOP + NO_Of_UNITS +
FAMILY_FRIENDLY + FREEHOLD,
data=condo_resale.sf,
bw=bw.fixed,
kernel = 'gaussian',
longlat = FALSE)gwr.fixed ***********************************************************************
* Package GWmodel *
***********************************************************************
Program starts at: 2024-10-14 22:25:36.767694
Call:
gwr.basic(formula = SELLING_PRICE ~ AREA_SQM + AGE + PROX_CBD +
PROX_CHILDCARE + PROX_ELDERLYCARE + PROX_URA_GROWTH_AREA +
PROX_MRT + PROX_PARK + PROX_PRIMARY_SCH + PROX_SHOPPING_MALL +
PROX_BUS_STOP + NO_Of_UNITS + FAMILY_FRIENDLY + FREEHOLD,
data = condo_resale.sf, bw = bw.fixed, kernel = "gaussian",
longlat = FALSE)
Dependent (y) variable: SELLING_PRICE
Independent variables: AREA_SQM AGE PROX_CBD PROX_CHILDCARE PROX_ELDERLYCARE PROX_URA_GROWTH_AREA PROX_MRT PROX_PARK PROX_PRIMARY_SCH PROX_SHOPPING_MALL PROX_BUS_STOP NO_Of_UNITS FAMILY_FRIENDLY FREEHOLD
Number of data points: 1436
***********************************************************************
* Results of Global Regression *
***********************************************************************
Call:
lm(formula = formula, data = data)
Residuals:
Min 1Q Median 3Q Max
-3470778 -298119 -23481 248917 12234210
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 527633.22 108183.22 4.877 1.20e-06 ***
AREA_SQM 12777.52 367.48 34.771 < 2e-16 ***
AGE -24687.74 2754.84 -8.962 < 2e-16 ***
PROX_CBD -77131.32 5763.12 -13.384 < 2e-16 ***
PROX_CHILDCARE -318472.75 107959.51 -2.950 0.003231 **
PROX_ELDERLYCARE 185575.62 39901.86 4.651 3.61e-06 ***
PROX_URA_GROWTH_AREA 39163.25 11754.83 3.332 0.000885 ***
PROX_MRT -294745.11 56916.37 -5.179 2.56e-07 ***
PROX_PARK 570504.81 65507.03 8.709 < 2e-16 ***
PROX_PRIMARY_SCH 159856.14 60234.60 2.654 0.008046 **
PROX_SHOPPING_MALL -220947.25 36561.83 -6.043 1.93e-09 ***
PROX_BUS_STOP 682482.22 134513.24 5.074 4.42e-07 ***
NO_Of_UNITS -245.48 87.95 -2.791 0.005321 **
FAMILY_FRIENDLY 146307.58 46893.02 3.120 0.001845 **
FREEHOLD 350599.81 48506.48 7.228 7.98e-13 ***
---Significance stars
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 756000 on 1421 degrees of freedom
Multiple R-squared: 0.6507
Adjusted R-squared: 0.6472
F-statistic: 189.1 on 14 and 1421 DF, p-value: < 2.2e-16
***Extra Diagnostic information
Residual sum of squares: 8.120609e+14
Sigma(hat): 752522.9
AIC: 42966.76
AICc: 42967.14
BIC: 41731.39
***********************************************************************
* Results of Geographically Weighted Regression *
***********************************************************************
*********************Model calibration information*********************
Kernel function: gaussian
Fixed bandwidth: 971.3405
Regression points: the same locations as observations are used.
Distance metric: Euclidean distance metric is used.
****************Summary of GWR coefficient estimates:******************
Min. 1st Qu. Median 3rd Qu.
Intercept -3.5988e+07 -5.1998e+05 7.6780e+05 1.7412e+06
AREA_SQM 1.0003e+03 5.2758e+03 7.4740e+03 1.2301e+04
AGE -1.3475e+05 -2.0813e+04 -8.6260e+03 -3.7784e+03
PROX_CBD -7.7047e+07 -2.3608e+05 -8.3600e+04 3.4646e+04
PROX_CHILDCARE -6.0097e+06 -3.3667e+05 -9.7425e+04 2.9007e+05
PROX_ELDERLYCARE -3.5000e+06 -1.5970e+05 3.1971e+04 1.9577e+05
PROX_URA_GROWTH_AREA -3.0170e+06 -8.2013e+04 7.0749e+04 2.2612e+05
PROX_MRT -3.5282e+06 -6.5836e+05 -1.8833e+05 3.6922e+04
PROX_PARK -1.2062e+06 -2.1732e+05 3.5383e+04 4.1335e+05
PROX_PRIMARY_SCH -2.2695e+07 -1.7066e+05 4.8472e+04 5.1555e+05
PROX_SHOPPING_MALL -7.2585e+06 -1.6684e+05 -1.0517e+04 1.5923e+05
PROX_BUS_STOP -1.4676e+06 -4.5207e+04 3.7601e+05 1.1664e+06
NO_Of_UNITS -1.3170e+03 -2.4822e+02 -3.0846e+01 2.5496e+02
FAMILY_FRIENDLY -2.2749e+06 -1.1140e+05 7.6214e+03 1.6107e+05
FREEHOLD -9.2067e+06 3.8073e+04 1.5169e+05 3.7528e+05
Max.
Intercept 112793548
AREA_SQM 21575
AGE 434201
PROX_CBD 2704596
PROX_CHILDCARE 1654087
PROX_ELDERLYCARE 38867814
PROX_URA_GROWTH_AREA 78515730
PROX_MRT 3124316
PROX_PARK 18122425
PROX_PRIMARY_SCH 4637503
PROX_SHOPPING_MALL 1529952
PROX_BUS_STOP 11342182
NO_Of_UNITS 12907
FAMILY_FRIENDLY 1720744
FREEHOLD 6073636
************************Diagnostic information*************************
Number of data points: 1436
Effective number of parameters (2trace(S) - trace(S'S)): 438.3804
Effective degrees of freedom (n-2trace(S) + trace(S'S)): 997.6196
AICc (GWR book, Fotheringham, et al. 2002, p. 61, eq 2.33): 42263.61
AIC (GWR book, Fotheringham, et al. 2002,GWR p. 96, eq. 4.22): 41632.36
BIC (GWR book, Fotheringham, et al. 2002,GWR p. 61, eq. 2.34): 42515.71
Residual sum of squares: 2.53407e+14
R-square value: 0.8909912
Adjusted R-square value: 0.8430417
***********************************************************************
Program stops at: 2024-10-14 22:25:38.225459
Building Adaptive Bandwidth GWR Model
💡 Computing adaptive bandwidth
bw.adaptive <- bw.gwr(formula = SELLING_PRICE ~ AREA_SQM + AGE +
PROX_CBD + PROX_CHILDCARE + PROX_ELDERLYCARE +
PROX_URA_GROWTH_AREA + PROX_MRT + PROX_PARK +
PROX_PRIMARY_SCH + PROX_SHOPPING_MALL + PROX_BUS_STOP +
NO_Of_UNITS + FAMILY_FRIENDLY + FREEHOLD,
data=condo_resale.sf,
approach="CV",
kernel="gaussian",
adaptive=TRUE,
longlat=FALSE)Adaptive bandwidth: 895 CV score: 7.952401e+14
Adaptive bandwidth: 561 CV score: 7.667364e+14
Adaptive bandwidth: 354 CV score: 6.953454e+14
Adaptive bandwidth: 226 CV score: 6.15223e+14
Adaptive bandwidth: 147 CV score: 5.674373e+14
Adaptive bandwidth: 98 CV score: 5.426745e+14
Adaptive bandwidth: 68 CV score: 5.168117e+14
Adaptive bandwidth: 49 CV score: 4.859631e+14
Adaptive bandwidth: 37 CV score: 4.646518e+14
Adaptive bandwidth: 30 CV score: 4.422088e+14
Adaptive bandwidth: 25 CV score: 4.430816e+14
Adaptive bandwidth: 32 CV score: 4.505602e+14
Adaptive bandwidth: 27 CV score: 4.462172e+14
Adaptive bandwidth: 30 CV score: 4.422088e+14
💡 Constructing the adaptive bandwidth gwr model
gwr.adaptive <- gwr.basic(formula = SELLING_PRICE ~ AREA_SQM + AGE +
PROX_CBD + PROX_CHILDCARE + PROX_ELDERLYCARE +
PROX_URA_GROWTH_AREA + PROX_MRT + PROX_PARK +
PROX_PRIMARY_SCH + PROX_SHOPPING_MALL + PROX_BUS_STOP +
NO_Of_UNITS + FAMILY_FRIENDLY + FREEHOLD,
data=condo_resale.sf, bw=bw.adaptive,
kernel = 'gaussian',
adaptive=TRUE,
longlat = FALSE)gwr.adaptive ***********************************************************************
* Package GWmodel *
***********************************************************************
Program starts at: 2024-10-14 22:25:49.285522
Call:
gwr.basic(formula = SELLING_PRICE ~ AREA_SQM + AGE + PROX_CBD +
PROX_CHILDCARE + PROX_ELDERLYCARE + PROX_URA_GROWTH_AREA +
PROX_MRT + PROX_PARK + PROX_PRIMARY_SCH + PROX_SHOPPING_MALL +
PROX_BUS_STOP + NO_Of_UNITS + FAMILY_FRIENDLY + FREEHOLD,
data = condo_resale.sf, bw = bw.adaptive, kernel = "gaussian",
adaptive = TRUE, longlat = FALSE)
Dependent (y) variable: SELLING_PRICE
Independent variables: AREA_SQM AGE PROX_CBD PROX_CHILDCARE PROX_ELDERLYCARE PROX_URA_GROWTH_AREA PROX_MRT PROX_PARK PROX_PRIMARY_SCH PROX_SHOPPING_MALL PROX_BUS_STOP NO_Of_UNITS FAMILY_FRIENDLY FREEHOLD
Number of data points: 1436
***********************************************************************
* Results of Global Regression *
***********************************************************************
Call:
lm(formula = formula, data = data)
Residuals:
Min 1Q Median 3Q Max
-3470778 -298119 -23481 248917 12234210
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 527633.22 108183.22 4.877 1.20e-06 ***
AREA_SQM 12777.52 367.48 34.771 < 2e-16 ***
AGE -24687.74 2754.84 -8.962 < 2e-16 ***
PROX_CBD -77131.32 5763.12 -13.384 < 2e-16 ***
PROX_CHILDCARE -318472.75 107959.51 -2.950 0.003231 **
PROX_ELDERLYCARE 185575.62 39901.86 4.651 3.61e-06 ***
PROX_URA_GROWTH_AREA 39163.25 11754.83 3.332 0.000885 ***
PROX_MRT -294745.11 56916.37 -5.179 2.56e-07 ***
PROX_PARK 570504.81 65507.03 8.709 < 2e-16 ***
PROX_PRIMARY_SCH 159856.14 60234.60 2.654 0.008046 **
PROX_SHOPPING_MALL -220947.25 36561.83 -6.043 1.93e-09 ***
PROX_BUS_STOP 682482.22 134513.24 5.074 4.42e-07 ***
NO_Of_UNITS -245.48 87.95 -2.791 0.005321 **
FAMILY_FRIENDLY 146307.58 46893.02 3.120 0.001845 **
FREEHOLD 350599.81 48506.48 7.228 7.98e-13 ***
---Significance stars
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 756000 on 1421 degrees of freedom
Multiple R-squared: 0.6507
Adjusted R-squared: 0.6472
F-statistic: 189.1 on 14 and 1421 DF, p-value: < 2.2e-16
***Extra Diagnostic information
Residual sum of squares: 8.120609e+14
Sigma(hat): 752522.9
AIC: 42966.76
AICc: 42967.14
BIC: 41731.39
***********************************************************************
* Results of Geographically Weighted Regression *
***********************************************************************
*********************Model calibration information*********************
Kernel function: gaussian
Adaptive bandwidth: 30 (number of nearest neighbours)
Regression points: the same locations as observations are used.
Distance metric: Euclidean distance metric is used.
****************Summary of GWR coefficient estimates:******************
Min. 1st Qu. Median 3rd Qu.
Intercept -1.3487e+08 -2.4669e+05 7.7928e+05 1.6194e+06
AREA_SQM 3.3188e+03 5.6285e+03 7.7825e+03 1.2738e+04
AGE -9.6746e+04 -2.9288e+04 -1.4043e+04 -5.6119e+03
PROX_CBD -2.5330e+06 -1.6256e+05 -7.7242e+04 2.6624e+03
PROX_CHILDCARE -1.2790e+06 -2.0175e+05 8.7158e+03 3.7778e+05
PROX_ELDERLYCARE -1.6212e+06 -9.2050e+04 6.1029e+04 2.8184e+05
PROX_URA_GROWTH_AREA -7.2686e+06 -3.0350e+04 4.5869e+04 2.4613e+05
PROX_MRT -4.3781e+07 -6.7282e+05 -2.2115e+05 -7.4593e+04
PROX_PARK -2.9020e+06 -1.6782e+05 1.1601e+05 4.6572e+05
PROX_PRIMARY_SCH -8.6418e+05 -1.6627e+05 -7.7853e+03 4.3222e+05
PROX_SHOPPING_MALL -1.8272e+06 -1.3175e+05 -1.4049e+04 1.3799e+05
PROX_BUS_STOP -2.0579e+06 -7.1461e+04 4.1104e+05 1.2071e+06
NO_Of_UNITS -2.1993e+03 -2.3685e+02 -3.4699e+01 1.1657e+02
FAMILY_FRIENDLY -5.9879e+05 -5.0927e+04 2.6173e+04 2.2481e+05
FREEHOLD -1.6340e+05 4.0765e+04 1.9023e+05 3.7960e+05
Max.
Intercept 18758355
AREA_SQM 23064
AGE 13303
PROX_CBD 11346650
PROX_CHILDCARE 2892127
PROX_ELDERLYCARE 2465671
PROX_URA_GROWTH_AREA 7384059
PROX_MRT 1186242
PROX_PARK 2588497
PROX_PRIMARY_SCH 3381462
PROX_SHOPPING_MALL 38038564
PROX_BUS_STOP 12081592
NO_Of_UNITS 1010
FAMILY_FRIENDLY 2072414
FREEHOLD 1813995
************************Diagnostic information*************************
Number of data points: 1436
Effective number of parameters (2trace(S) - trace(S'S)): 350.3088
Effective degrees of freedom (n-2trace(S) + trace(S'S)): 1085.691
AICc (GWR book, Fotheringham, et al. 2002, p. 61, eq 2.33): 41982.22
AIC (GWR book, Fotheringham, et al. 2002,GWR p. 96, eq. 4.22): 41546.74
BIC (GWR book, Fotheringham, et al. 2002,GWR p. 61, eq. 2.34): 41914.08
Residual sum of squares: 2.528227e+14
R-square value: 0.8912425
Adjusted R-square value: 0.8561185
***********************************************************************
Program stops at: 2024-10-14 22:25:51.237667
Visualising GWR Output
Condition Number: Results associated with condition numbers larger than 30, may be unreliable.
Local R2: Values range between 0.0 and 1.0. Very low values indicate the local model is performing poorly.
Residuals: The fitted y values are subtracted from the observed y values.
Coefficient Standard Error: Confidence in those estimates are higher when standard errors are small in relation to the actual coefficient values. Large standard errors may indicate problems with local collinearity.
Converting SDF into sf data.frame
condo_resale.sf.adaptive <- st_as_sf(gwr.adaptive$SDF) %>%
st_transform(crs=3414)condo_resale.sf.adaptive.svy21 <- st_transform(condo_resale.sf.adaptive, 3414)
condo_resale.sf.adaptive.svy21Simple feature collection with 1436 features and 51 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 14940.85 ymin: 24765.67 xmax: 43352.45 ymax: 48382.81
Projected CRS: SVY21 / Singapore TM
First 10 features:
Intercept AREA_SQM AGE PROX_CBD PROX_CHILDCARE PROX_ELDERLYCARE
1 2050011.7 9561.892 -9514.634 -120681.9 319266.92 -393417.79
2 1633128.2 16576.853 -58185.479 -149434.2 441102.18 325188.74
3 3433608.2 13091.861 -26707.386 -259397.8 -120116.82 535855.81
4 234358.9 20730.601 -93308.988 2426853.7 480825.28 314783.72
5 2285804.9 6722.836 -17608.018 -316835.5 90764.78 -137384.61
6 -3568877.4 6039.581 -26535.592 327306.1 -152531.19 -700392.85
7 -2874842.4 16843.575 -59166.727 -983577.2 -177810.50 -122384.02
8 2038086.0 6905.135 -17681.897 -285076.6 70259.40 -96012.78
9 1718478.4 9580.703 -14401.128 105803.4 -657698.02 -123276.00
10 3457054.0 14072.011 -31579.884 -234895.4 79961.45 548581.04
PROX_URA_GROWTH_AREA PROX_MRT PROX_PARK PROX_PRIMARY_SCH
1 -159980.20 -299742.96 -172104.47 242668.03
2 -142290.39 -2510522.23 523379.72 1106830.66
3 -253621.21 -936853.28 209099.85 571462.33
4 -2679297.89 -2039479.50 -759153.26 3127477.21
5 303714.81 -44567.05 -10284.62 30413.56
6 -28051.25 733566.47 1511488.92 320878.23
7 1397676.38 -2745430.34 710114.74 1786570.95
8 269368.71 -14552.99 73533.34 53359.73
9 -361974.72 -476785.32 -132067.59 -40128.92
10 -150024.38 -1503835.53 574155.47 108996.67
PROX_SHOPPING_MALL PROX_BUS_STOP NO_Of_UNITS FAMILY_FRIENDLY FREEHOLD
1 300881.390 1210615.4 104.8290640 -9075.370 303955.6
2 -87693.378 1843587.2 -288.3441183 310074.664 396221.3
3 -126732.712 1411924.9 -9.5532945 5949.746 168821.7
4 -29593.342 7225577.5 -161.3551620 1556178.531 1212515.6
5 -7490.586 677577.0 42.2659674 58986.951 328175.2
6 258583.881 1086012.6 -214.3671271 201992.641 471873.1
7 -384251.210 5094060.5 -0.9212521 359659.512 408871.9
8 -39634.902 735767.1 30.1741069 55602.506 347075.0
9 276718.757 2815772.4 675.1615559 -30453.297 503872.8
10 -454726.822 2123557.0 -21.3044311 -100935.586 213324.6
y yhat residual CV_Score Stud_residual Intercept_SE AREA_SQM_SE
1 3000000 2886532 113468.16 0 0.38207013 516105.5 823.2860
2 3880000 3466801 413198.52 0 1.01433140 488083.5 825.2380
3 3325000 3616527 -291527.20 0 -0.83780678 963711.4 988.2240
4 4250000 5435482 -1185481.63 0 -2.84614670 444185.5 617.4007
5 1400000 1388166 11834.26 0 0.03404453 2119620.6 1376.2778
6 1320000 1516702 -196701.94 0 -0.72065800 28572883.7 2348.0091
7 3410000 3266881 143118.77 0 0.41291992 679546.6 893.5893
8 1420000 1431955 -11955.27 0 -0.03033109 2217773.1 1415.2604
9 2025000 1832799 192200.83 0 0.52018109 814281.8 943.8434
10 2550000 2223364 326635.53 0 1.10559735 2410252.0 1271.4073
AGE_SE PROX_CBD_SE PROX_CHILDCARE_SE PROX_ELDERLYCARE_SE
1 5889.782 37411.22 319111.1 120633.34
2 6226.916 23615.06 299705.3 84546.69
3 6510.236 56103.77 349128.5 129687.07
4 6010.511 469337.41 304965.2 127150.69
5 8180.361 410644.47 698720.6 327371.55
6 14601.909 5272846.47 1141599.8 1653002.19
7 8970.629 346164.20 530101.1 148598.71
8 8661.309 438035.69 742532.8 399221.05
9 11791.208 89148.35 704630.7 329683.30
10 9941.980 173532.77 500976.2 281876.74
PROX_URA_GROWTH_AREA_SE PROX_MRT_SE PROX_PARK_SE PROX_PRIMARY_SCH_SE
1 56207.39 185181.3 205499.6 152400.7
2 76956.50 281133.9 229358.7 165150.7
3 95774.60 275483.7 314124.3 196662.6
4 470762.12 279877.1 227249.4 240878.9
5 474339.56 363830.0 364580.9 249087.7
6 5496627.21 730453.2 1741712.0 683265.5
7 371692.97 375511.9 297400.9 344602.8
8 517977.91 423155.4 440984.4 261251.2
9 153436.22 285325.4 304998.4 278258.5
10 239182.57 571355.7 599131.8 331284.8
PROX_SHOPPING_MALL_SE PROX_BUS_STOP_SE NO_Of_UNITS_SE FAMILY_FRIENDLY_SE
1 109268.8 600668.6 218.1258 131474.7
2 98906.8 410222.1 208.9410 114989.1
3 119913.3 464156.7 210.9828 146607.2
4 177104.1 562810.8 361.7767 108726.6
5 301032.9 740922.4 299.5034 160663.7
6 2931208.6 1418333.3 602.5571 331727.0
7 249969.5 821236.4 532.1978 129241.2
8 351634.0 775038.4 338.6777 171895.1
9 289872.7 850095.5 439.9037 220223.4
10 265529.7 631399.2 259.0169 189125.5
FREEHOLD_SE Intercept_TV AREA_SQM_TV AGE_TV PROX_CBD_TV
1 115954.0 3.9720784 11.614302 -1.615447 -3.22582173
2 130110.0 3.3460017 20.087361 -9.344188 -6.32792021
3 141031.5 3.5629010 13.247868 -4.102368 -4.62353528
4 138239.1 0.5276150 33.577223 -15.524302 5.17080808
5 210641.1 1.0784029 4.884795 -2.152474 -0.77155660
6 374347.3 -0.1249043 2.572214 -1.817269 0.06207388
7 182216.9 -4.2305303 18.849348 -6.595605 -2.84136028
8 216649.4 0.9189786 4.879056 -2.041481 -0.65080678
9 220473.7 2.1104224 10.150733 -1.221345 1.18682383
10 206346.2 1.4343123 11.068059 -3.176418 -1.35360852
PROX_CHILDCARE_TV PROX_ELDERLYCARE_TV PROX_URA_GROWTH_AREA_TV PROX_MRT_TV
1 1.00048819 -3.2612693 -2.846248368 -1.61864578
2 1.47178634 3.8462625 -1.848971738 -8.92998600
3 -0.34404755 4.1319138 -2.648105057 -3.40075727
4 1.57665606 2.4756745 -5.691404992 -7.28705261
5 0.12990138 -0.4196596 0.640289855 -0.12249416
6 -0.13361179 -0.4237096 -0.005103357 1.00426206
7 -0.33542751 -0.8235874 3.760298131 -7.31116712
8 0.09462126 -0.2405003 0.520038994 -0.03439159
9 -0.93339393 -0.3739225 -2.359121712 -1.67102293
10 0.15961128 1.9461735 -0.627237944 -2.63204802
PROX_PARK_TV PROX_PRIMARY_SCH_TV PROX_SHOPPING_MALL_TV PROX_BUS_STOP_TV
1 -0.83749312 1.5923022 2.75358842 2.0154464
2 2.28192684 6.7019454 -0.88662640 4.4941192
3 0.66565951 2.9058009 -1.05686949 3.0419145
4 -3.34061770 12.9836105 -0.16709578 12.8383775
5 -0.02820944 0.1220998 -0.02488294 0.9145046
6 0.86781794 0.4696245 0.08821750 0.7656963
7 2.38773567 5.1844351 -1.53719231 6.2029165
8 0.16674816 0.2042469 -0.11271635 0.9493299
9 -0.43301073 -0.1442145 0.95462153 3.3123012
10 0.95831249 0.3290120 -1.71252687 3.3632555
NO_Of_UNITS_TV FAMILY_FRIENDLY_TV FREEHOLD_TV Local_R2
1 0.480589953 -0.06902748 2.621347 0.8846744
2 -1.380026395 2.69655779 3.045280 0.8899773
3 -0.045279967 0.04058290 1.197050 0.8947007
4 -0.446007570 14.31276425 8.771149 0.9073605
5 0.141120178 0.36714544 1.557983 0.9510057
6 -0.355762335 0.60891234 1.260522 0.9247586
7 -0.001731033 2.78285441 2.243875 0.8310458
8 0.089093858 0.32346758 1.602012 0.9463936
9 1.534793921 -0.13828365 2.285410 0.8380365
10 -0.082251138 -0.53369623 1.033819 0.9080753
geometry
1 POINT (22085.12 29951.54)
2 POINT (25656.84 34546.2)
3 POINT (23963.99 32890.8)
4 POINT (27044.28 32319.77)
5 POINT (41042.56 33743.64)
6 POINT (39717.04 32943.1)
7 POINT (28419.1 33513.37)
8 POINT (40763.57 33879.61)
9 POINT (23595.63 28884.78)
10 POINT (24586.56 33194.31)
gwr.adaptive.output <- as.data.frame(gwr.adaptive$SDF)
condo_resale.sf.adaptive <- cbind(condo_resale.sf, as.matrix(gwr.adaptive.output))glimpse(condo_resale.sf.adaptive)Rows: 1,436
Columns: 78
$ nb <nb> <66, 77, 123, 238, 239, 343>, <21, 162, 163, 19…
$ wt <list> <0.1666667, 0.1666667, 0.1666667, 0.1666667, …
$ POSTCODE <dbl> 118635, 288420, 267833, 258380, 467169, 466472…
$ SELLING_PRICE <dbl> 3000000, 3880000, 3325000, 4250000, 1400000, 1…
$ AREA_SQM <dbl> 309, 290, 248, 127, 145, 139, 218, 141, 165, 1…
$ AGE <dbl> 30, 32, 33, 7, 28, 22, 24, 24, 27, 31, 17, 22,…
$ PROX_CBD <dbl> 7.941259, 6.609797, 6.898000, 4.038861, 11.783…
$ PROX_CHILDCARE <dbl> 0.16597932, 0.28027246, 0.42922669, 0.39473543…
$ PROX_ELDERLYCARE <dbl> 2.5198118, 1.9333338, 0.5021395, 1.9910316, 1.…
$ PROX_URA_GROWTH_AREA <dbl> 6.618741, 7.505109, 6.463887, 4.906512, 6.4106…
$ PROX_HAWKER_MARKET <dbl> 1.76542207, 0.54507614, 0.37789301, 1.68259969…
$ PROX_KINDERGARTEN <dbl> 0.05835552, 0.61592412, 0.14120309, 0.38200076…
$ PROX_MRT <dbl> 0.5607188, 0.6584461, 0.3053433, 0.6910183, 0.…
$ PROX_PARK <dbl> 1.1710446, 0.1992269, 0.2779886, 0.9832843, 0.…
$ PROX_PRIMARY_SCH <dbl> 1.6340256, 0.9747834, 1.4715016, 1.4546324, 0.…
$ PROX_TOP_PRIMARY_SCH <dbl> 3.3273195, 0.9747834, 1.4715016, 2.3006394, 0.…
$ PROX_SHOPPING_MALL <dbl> 2.2102717, 2.9374279, 1.2256850, 0.3525671, 1.…
$ PROX_SUPERMARKET <dbl> 0.9103958, 0.5900617, 0.4135583, 0.4162219, 0.…
$ PROX_BUS_STOP <dbl> 0.10336166, 0.28673408, 0.28504777, 0.29872340…
$ NO_Of_UNITS <dbl> 18, 20, 27, 30, 30, 31, 32, 32, 32, 32, 34, 34…
$ FAMILY_FRIENDLY <dbl> 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0…
$ FREEHOLD <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1…
$ LEASEHOLD_99YR <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ LOG_SELLING_PRICE <dbl> 14.91412, 15.17135, 15.01698, 15.26243, 14.151…
$ MLR_RES_2 <dbl> -1489099.55, 415494.57, 194129.69, 1088992.71,…
$ Intercept <named list> 2050012, 1633128, 3433608, 234358.9, 22…
$ AREA_SQM.1 <named list> 9561.892, 16576.85, 13091.86, 20730.6, …
$ AGE.1 <named list> -9514.634, -58185.48, -26707.39, -93308…
$ PROX_CBD.1 <named list> -120681.9, -149434.2, -259397.8, 242685…
$ PROX_CHILDCARE.1 <named list> 319266.9, 441102.2, -120116.8, 480825.3…
$ PROX_ELDERLYCARE.1 <named list> -393417.8, 325188.7, 535855.8, 314783.7…
$ PROX_URA_GROWTH_AREA.1 <named list> -159980.2, -142290.4, -253621.2, -26792…
$ PROX_MRT.1 <named list> -299743, -2510522, -936853.3, -2039479,…
$ PROX_PARK.1 <named list> -172104.5, 523379.7, 209099.9, -759153.…
$ PROX_PRIMARY_SCH.1 <named list> 242668, 1106831, 571462.3, 3127477, 304…
$ PROX_SHOPPING_MALL.1 <named list> 300881.4, -87693.38, -126732.7, -29593.…
$ PROX_BUS_STOP.1 <named list> 1210615, 1843587, 1411925, 7225578, 677…
$ NO_Of_UNITS.1 <named list> 104.8291, -288.3441, -9.553294, -161.35…
$ FAMILY_FRIENDLY.1 <named list> -9075.37, 310074.7, 5949.746, 1556179, …
$ FREEHOLD.1 <named list> 303955.6, 396221.3, 168821.7, 1212516, …
$ y <named list> 3e+06, 3880000, 3325000, 4250000, 14000…
$ yhat <named list> 2886532, 3466801, 3616527, 5435482, 138…
$ residual <named list> 113468.2, 413198.5, -291527.2, -1185482…
$ CV_Score <named list> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
$ Stud_residual <named list> 0.3820701, 1.014331, -0.8378068, -2.846…
$ Intercept_SE <named list> 516105.5, 488083.5, 963711.4, 444185.5,…
$ AREA_SQM_SE <named list> 823.286, 825.238, 988.224, 617.4007, 13…
$ AGE_SE <named list> 5889.782, 6226.916, 6510.236, 6010.511,…
$ PROX_CBD_SE <named list> 37411.22, 23615.06, 56103.77, 469337.4,…
$ PROX_CHILDCARE_SE <named list> 319111.1, 299705.3, 349128.5, 304965.2,…
$ PROX_ELDERLYCARE_SE <named list> 120633.3, 84546.69, 129687.1, 127150.7,…
$ PROX_URA_GROWTH_AREA_SE <named list> 56207.39, 76956.5, 95774.6, 470762.1, 4…
$ PROX_MRT_SE <named list> 185181.3, 281133.9, 275483.7, 279877.1,…
$ PROX_PARK_SE <named list> 205499.6, 229358.7, 314124.3, 227249.4,…
$ PROX_PRIMARY_SCH_SE <named list> 152400.7, 165150.7, 196662.6, 240878.9,…
$ PROX_SHOPPING_MALL_SE <named list> 109268.8, 98906.8, 119913.3, 177104.1, …
$ PROX_BUS_STOP_SE <named list> 600668.6, 410222.1, 464156.7, 562810.8,…
$ NO_Of_UNITS_SE <named list> 218.1258, 208.941, 210.9828, 361.7767, …
$ FAMILY_FRIENDLY_SE <named list> 131474.7, 114989.1, 146607.2, 108726.6,…
$ FREEHOLD_SE <named list> 115954, 130110, 141031.5, 138239.1, 210…
$ Intercept_TV <named list> 3.972078, 3.346002, 3.562901, 0.527615,…
$ AREA_SQM_TV <named list> 11.6143, 20.08736, 13.24787, 33.57722, …
$ AGE_TV <named list> -1.615447, -9.344188, -4.102368, -15.52…
$ PROX_CBD_TV <named list> -3.225822, -6.32792, -4.623535, 5.17080…
$ PROX_CHILDCARE_TV <named list> 1.000488, 1.471786, -0.3440476, 1.57665…
$ PROX_ELDERLYCARE_TV <named list> -3.261269, 3.846262, 4.131914, 2.475675…
$ PROX_URA_GROWTH_AREA_TV <named list> -2.846248, -1.848972, -2.648105, -5.691…
$ PROX_MRT_TV <named list> -1.618646, -8.929986, -3.400757, -7.287…
$ PROX_PARK_TV <named list> -0.8374931, 2.281927, 0.6656595, -3.340…
$ PROX_PRIMARY_SCH_TV <named list> 1.592302, 6.701945, 2.905801, 12.98361,…
$ PROX_SHOPPING_MALL_TV <named list> 2.753588, -0.8866264, -1.056869, -0.167…
$ PROX_BUS_STOP_TV <named list> 2.015446, 4.494119, 3.041914, 12.83838,…
$ NO_Of_UNITS_TV <named list> 0.48059, -1.380026, -0.04527997, -0.446…
$ FAMILY_FRIENDLY_TV <named list> -0.06902748, 2.696558, 0.0405829, 14.31…
$ FREEHOLD_TV <named list> 2.621347, 3.04528, 1.19705, 8.771149, 1…
$ Local_R2 <named list> 0.8846744, 0.8899773, 0.8947007, 0.9073…
$ geometry.1 <named list> <POINT (22085.12 29951.54)>, <POINT (25…
$ geometry <POINT [m]> POINT (22085.12 29951.54), POINT (25656.…
summary(gwr.adaptive$SDF$yhat) Min. 1st Qu. Median Mean 3rd Qu. Max.
171347 1102001 1385528 1751842 1982307 13887901